﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Web;
using System.Net.Security;
using System.Security.Cryptography.X509Certificates;
using LarDosIdosos.Business.Model;
using LarDosIdosos.Properties;

namespace LarDosIdosos
{
    public class EnviaEmails
    {

        /// <summary>
        /// Envia um email de rcuperação de senha para o usuário e retorna true se funfou
        /// </summary>
        /// <param name="funcionario"></param>
        /// <returns></returns>
        public static bool EnviaEmailDeRecuperacaoDeSenha(Funcionario funcionario)
        {
            string remetente = Settings.Default["Email"].ToString();
            try
            {
                MailAddress from = new MailAddress(remetente, "Lar São José");
                MailAddress to = new MailAddress(funcionario.Email_Funcionario);
                MailMessage msg = new MailMessage(from, to);
                msg.Subject = "Recuperação de senha";
                msg.SubjectEncoding = Encoding.GetEncoding("ISO-8859-1");
                StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.AppendLine("Olá " + funcionario.Nome_Funcionario + ",<br/>");
                stringBuilder.AppendLine("Uma solictação de recuperação de senha, para seu e-mail, foi realizada.<br/>");
                stringBuilder.AppendLine("Senha: " + funcionario.Senha_Funcionario + "<br/>");
                stringBuilder.AppendLine("Após ler este e-mail apague-o, por segurança.<br/>");
                stringBuilder.AppendLine("<br/>");
                stringBuilder.AppendLine("Att.,<br/>");
                stringBuilder.AppendLine("Lar São José.");
                msg.Body = stringBuilder.ToString();
                msg.BodyEncoding = Encoding.GetEncoding("ISO-8859-1");
                msg.IsBodyHtml = true;
                msg.Priority = MailPriority.High;


                //msg.Headers.Add("Disposition-Notification-To", notifica.To); //Confirmação de leitura

                SmtpClient smtp = new SmtpClient(Settings.Default.ServidorDeEmail, Settings.Default.PortaDeEmail);
                //dominio de email e porta
                smtp.EnableSsl = Convert.ToBoolean(Settings.Default.EnableSsl);
                if (Settings.Default.credentials)
                {
					smtp.UseDefaultCredentials = false;
                    smtp.Credentials = new NetworkCredential(Settings.Default.Email, Settings.Default.SenhaEmail);
                }
				ServicePointManager.ServerCertificateValidationCallback =  delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
                smtp.Send(msg);
                return true;
            }
            catch(Exception ex)
            {
                throw new Exception("Erro ao enviar e-mail");
            }
        }
    }
}